#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <getopt.h>
#include <unistd.h>
#include <signal.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <time.h>
#include <errno.h>
#include <sys/wait.h>
#include <sys/ioctl.h> 
#include <locale.h>
#include <libintl.h>
#include <dirent.h>
#include <langinfo.h>

#if 0

#include<unistd.h>

int ioctl(int fd, int cmd, ...);

0 ：成功 
-1 ：出错

struct winsize
{
	unsigned short ws_row; // 窗口字符行数。
	unsigned short ws_col; // 窗口字符列数。
	unsigned short ws_xpixel; // 窗口宽度，象素值。
	unsigned short ws_ypixel; // 窗口高度，象素值。
};


#endif

static int output_width = 132;


int winsize(void)
{
    /*
     * include/uapi/asm-generic/termios.h
     * struct winsize {
        unsigned short ws_row;
        unsigned short ws_col;
        unsigned short ws_xpixel;
        unsigned short ws_ypixel;
        };
      */
    struct winsize winsz;

    /* 
     * 屏幕尺寸 概念优先于 LINES 和 COLUMNS 环境变量
     * include/uapi/asm-generic/ioctls.h:38:#define TIOCGWINSZ 0x5413      (pstree)
     */
    if (ioctl(1, TIOCGWINSZ, &winsz) >= 0)
        if (winsz.ws_col)
            output_width = winsz.ws_col;
    
    printf("windows size of clo :%d\n", output_width);      // 113

    return 0;
}

int main(void)
{
    winsize();

    return 0;
}


